Today, an ever-increasing number of mobile devices, such as PDAs and cellular telephones, are being outfitted with digital cameras and video recorders. Such digital cameras use sensors to which capture images in a digital data format, i.e., as bits; zeros and ones. Digital data processing involves manipulating these bits to enhance the resultant image, or for other purposes, such as convenient storage.
There are numerous well-known image data processing operations that can be performed on digital image data. These include companding (reducing the bit-depth of the image data), gamma correction (compensating for brightness differences), sensor correction (compensating for sensor non-linearity), and illumination correction (compensating for changed illumination environment, e.g. inside or outside) to name a few. All of the data processing operations mentioned above may be implemented using a transfer function to describe the appropriate adjustment. A transfer function is merely a function that maps input values to output values according to a formula or curve.
Transfer functions can be implemented in hardware as look-up tables (LUT) to increase processing speed. However, a full LUT representing all possible outputs of a transfer function takes up a lot of memory. One way to reduce the memory required to store the LUT is to have the LUT store only sample outputs of the transfer function. However, sampling the transfer function compromises accuracy and flexibility.